/***
 * Online Store Retailer
 *
 * Copyright (C) 2013 Integrator Project N.2 Class
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 * Authors: Johan Santacruz
 * Sebasti�n Santamaria
 * Miguel Jimen�z
 * Fabi�n Caicedo
 * Juan David Lenis
 * Johnatan Zarama
 * Javier Vasquez
 * Nicol�s Lema
 * Sebasti�n Cortes
 * Andr�s Agredo
 * Luis Dominguez
 */
package com.pi2.osr.ejb.custom;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;

import com.pi2.osr.ejb.base.ValorProductoCuantitativoBase;
import com.pi2.osr.ejb.entities.Detallecompra;
import com.pi2.osr.ejb.entities.Producto;
import com.pi2.osr.ejb.entities.Promocion;
import com.pi2.osr.ejb.entities.Usuario;
import com.pi2.osr.ejb.entities.Valorproductocuantitativo;
import com.pi2.osr.ejb.interfaces.IProducto;
import com.pi2.osr.ejb.utilities.OSRException;

@Stateless(mappedName = "OSR_Frontend_EJB-ValorProductoCuantitativo")
@LocalBean
public class ValorProductoCuantitativoCustom  extends ValorProductoCuantitativoBase implements IProducto {

	private EntityManager em;

	public ValorProductoCuantitativoCustom() {
		super();
	}


	public Valorproductocuantitativo registrarValorProductoCuantitativo(Valorproductocuantitativo ValorProductoCuantitativo) throws OSRException {

		boolean isAdded=false;


		if(ValorProductoCuantitativo.getIdvalorcuantitativo().equals("") || ValorProductoCuantitativo.getIdvalorcuantitativo()==null) 
			throw new OSRException("valorcuantitativoCustom", "registrarvalorcuantitativo", "60??", 
					"id del valor cuantitativo esta vac�o", new Exception());


		isAdded = getValorproductocuantitativoFindByIdvalorcuantitativo(new BigDecimal(ValorProductoCuantitativo.getIdvalorcuantitativo()))==null;

		Valorproductocuantitativo nuevoValorProductoCuantitativo=null;

		if(!isAdded)
		{
			throw new OSRException("ValorProductoCuantitativoCustom", "registrarValorProductoCuantitativo", "61?", 
					"El id Valor producto cuantitativo ya existe", new Exception());

		}

		nuevoValorProductoCuantitativo=persistValorproductocuantitativo(ValorProductoCuantitativo);

		return nuevoValorProductoCuantitativo;
	}



	public List<Valorproductocuantitativo> obtenerValorProductoCuantitativo(int Idvalorcuantitativo ) throws OSRException {

		ArrayList<Valorproductocuantitativo> ValorProductoCuantitativos=(ArrayList<Valorproductocuantitativo>)getValorproductocuantitativoFindByIdvalorcuantitativo(new BigDecimal(Idvalorcuantitativo));

		if(ValorProductoCuantitativos.size()==0)
			throw new OSRException("ProductoCustom", "obtener ValorProductoCuantitativos", "65??", 
					"No hay Valor producto cuantitativo disponibles.", new Exception());

		return ValorProductoCuantitativos;
	}



	@Override
	public Producto registrarProducto(Producto producto) throws OSRException {
		
		return null;
	}

	@Override
	public Producto buscarProducto(Producto producto) throws OSRException {
		
		return null;
	}

	@Override
	public List<Producto> obtenerProductosConPromocion() throws OSRException {
		
		return null;
	}

	@Override
	public boolean calificarProducto(Integer valor, Detallecompra detallecompra) throws OSRException {
		
		return false;
	}

	@Override
	public boolean esCalificable(Usuario cliente, Producto producto) {
		
		return false;
	}

	@Override
	public List<Producto> buscarProductoPorPalabras(String palabras)
			throws OSRException {
		
		return null;
	}

	@Override
	public Promocion aplicarDescuento(String nombre, Date fecha1, Date fecha2, Producto producto, double valor) throws OSRException {
		
		return null;
	}

	@Override
	public List<Producto> obtenerProductos() throws OSRException {
		
		return null;
	}

	@Override
	public List<Promocion> obtenerPromocionesAntiguas(Producto producto) {
		
		return null;
	}

	@Override
	public Producto editarProducto(Producto producto) throws OSRException {
		
		return null;
	}

	@Override
	public List<Producto> buscarProductoPorExistencia(Integer cantidad) {
		
		return null;
	}

	@Override
	public List<Producto> buscarUltimosProductos(Date date) {
		
		return null;
	}

	@Override
	public boolean cambiarCantidadMinima(Producto producto, Integer cantidad) {
		
		return false;
	}

	@Override
	public boolean aumentarExistencias(Integer cantidad, Producto producto) {
		
		return false;
	}

	@Override
	public boolean disminuirExistencias(Integer cantidad, Producto producto) {
		
		return false;
	}


	@Override
	public BigInteger obtenerCalificacionProducto(Producto p) {
		
		return null;
	}




	public Valorproductocuantitativo agregarValorProducto(Valorproductocuantitativo producto) throws OSRException{


		if(producto==null){
			throw new OSRException("valorPCustom", "editarValorProducto", "Falta", 
					"Se ingreso un dato null", new Exception());
		}

		Valorproductocuantitativo productoModificado=persistValorproductocuantitativo(producto);

		return producto;

	}

	public Valorproductocuantitativo editarValorProducto(Valorproductocuantitativo producto) throws OSRException{


		if(producto==null){
			throw new OSRException("valorPCustom", "editarValorProducto", "Falta", 
					"Se ingreso un dato null", new Exception());
		}

		Valorproductocuantitativo productoModificado=mergeValorproductocuantitativo(producto);

		return producto;

	}

}